<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="-1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta content="Robot Framework 2.8.2 (Python 2.7.5 on linux2)" name="Generator">
<link rel="icon" type="image/x-icon" href="">
<style media="all" type="text/css">
body {
    background: white;
    color: black;
    font-size: small;
    font-family: sans-serif;
    padding: 0 0.5em;
}
.metadata th {
    text-align: left;
    padding-right: 1em;
}
a.name, span.name {
    font-style: italic;
}
a, a:link, a:visited {
    color: #c30;
}
a img {
    border: 1px solid #c30 !important;
}
a:hover, a:active {
    text-decoration: underline;
    color: black;
}
div.shortcuts {
    margin: 1em 0;
    font-size: 0.9em;
}
div.shortcuts a {
    display: inline-block;
    text-decoration: none;
    white-space: nowrap;
    color: black;
}
div.shortcuts a::first-letter {
    font-weight: bold;
    font-size: 1.05em;
    letter-spacing: 0.1em;
}
div.shortcuts a:hover {
    text-decoration: underline;
}
table.keywords {
    border: 2px solid black;
    border-collapse: collapse;
    empty-cells: show;
    margin: 0.3em 0;
    width: 100%;
}
table.keywords th, table.keywords td {
    border: 2px solid black;
    padding: 0.2em;
    vertical-align: top;
}
table.keywords th {
    background: #bbb;
    color: black;
}
table.keywords td.kw {
    width: 150px;
    font-weight: bold;
}
table.keywords td.arg {
    width: 300px;
    font-style: italic;
}
.footer {
    font-size: 0.9em;
}
/* Docs originating from HTML and reST are wrapped to divs. */
.doc div > *:first-child {
    margin-top: 0;
}
.doc div > *:last-child {    /* Does not work with IE8. */
    margin-bottom: 0;
}
</style>
<style media="print" type="text/css">
body {
    margin: 0;
    padding: 0;
    font-size: 8pt;
}
a {
    text-decoration: none;
}
</style>
<style media="all" type="text/css">
#javascript-disabled {
    width: 600px;
    margin: 100px auto 0 auto;
    padding: 20px;
    color: #2A2A2E;
    border: 1px solid #9A9A9E;
    background: #FAFAFF;
}
#javascript-disabled h1 {
    width: 100%;
    float: none;
}
#javascript-disabled ul {
    font-size: 1.2em;
}
#javascript-disabled li {
    margin: 0.5em 0;
}
#javascript-disabled b {
    font-style: italic;
}
</style>
<style media="all" type="text/css">
.doc > * {
    margin: 0.7em 1em 0.1em 1em;
    padding: 0;
}
.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
    margin: 0.7em 0 0.1em 0;
}
.doc > *:first-child {
    margin-top: 0.1em;
}
.doc table {
    border: 1px solid gray;
    background: transparent;
    border-collapse: collapse;
    empty-cells: show;
    font-size: 0.9em;
}
.doc table th, .doc table td {
    border: 1px solid gray;
    background: transparent;
    padding: 0.1em 0.3em;
    height: 1.2em;
}
.doc table th {
    text-align: center;
    letter-spacing: 0.1em;
}
.doc pre {
    font-size: 1.1em;
    background: #F4F4FF;
}
.doc li {
    list-style-position: inside;
    list-style-type: square;
}
.doc img {
    border: 1px solid gray;
}
.doc hr {
    background: gray;
    height: 1px;
    border: 0;
}
</style>
<script type="text/javascript">
/*! jQuery v1.8.3 jquery.com | jquery.org/license */
(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\ufeff\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window);
</script>
<script type="text/javascript">
/*
 * jQuery Templates Plugin 1.0.0pre
 * http://github.com/jquery/jquery-tmpl
 * Requires jQuery 1.4.2
 *
 * Copyright Software Freedom Conservancy, Inc.
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 */
(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
</script>
<script type="text/javascript">
libdoc = {"doc":"<p>Robot Framework test library for SSH and SFTP.\x3c/p>\n<p>The library has the following main usages:\x3c/p>\n<ul>\n<li>Executing commands on the remote machine, either with blocking or non-blocking behaviour (see <a href=\"#Execute Command\" class=\"name\">Execute Command\x3c/a> and <a href=\"#Start Command\" class=\"name\">Start Command\x3c/a>, respectively).\x3c/li>\n<li>Writing and reading in an interactive shell (e.g. <a href=\"#Read\" class=\"name\">Read\x3c/a> and <a href=\"#Write\" class=\"name\">Write\x3c/a>).\x3c/li>\n<li>Transferring files and directories over SFTP (e.g. <a href=\"#Get File\" class=\"name\">Get File\x3c/a> and <a href=\"#Put Directory\" class=\"name\">Put Directory\x3c/a>).\x3c/li>\n<li>Ensuring that files or directories exist on the remote machine (e.g. <a href=\"#File Should Exist\" class=\"name\">File Should Exist\x3c/a> and <a href=\"#Directory Should Not Exist\" class=\"name\">Directory Should Not Exist\x3c/a>).\x3c/li>\n\x3c/ul>\n<p>This library works both with Python and Jython, but uses different tools internally depending on the interpreter. See <a href=\"http://code.google.com/p/robotframework-sshlibrary/wiki/InstallationInstructions\">installation instructions\x3c/a> for more details about the dependencies. IronPython is unfortunately not supported.\x3c/p>\n<h3 id=\"Table of contents\">Table of contents\x3c/h3>\n<ul>\n<li><a href=\"#Connections and login\" class=\"name\">Connections and login\x3c/a>\x3c/li>\n<li><a href=\"#Configuration\" class=\"name\">Configuration\x3c/a>\x3c/li>\n<li><a href=\"#Executing commands\" class=\"name\">Executing commands\x3c/a>\x3c/li>\n<li><a href=\"#Interactive shells\" class=\"name\">Interactive shells\x3c/a>\x3c/li>\n<li><a href=\"#Pattern matching\" class=\"name\">Pattern matching\x3c/a>\x3c/li>\n<li><a href=\"#Example\" class=\"name\">Example\x3c/a>\x3c/li>\n<li><a href=\"#Importing\" class=\"name\">Importing\x3c/a>\x3c/li>\n<li><a href=\"#Shortcuts\" class=\"name\">Shortcuts\x3c/a>\x3c/li>\n<li><a href=\"#Keywords\" class=\"name\">Keywords\x3c/a>\x3c/li>\n\x3c/ul>\n<h2 id=\"Connections and login\">Connections and login\x3c/h2>\n<p>The library supports multiple connections to different hosts. New connections are opened with <a href=\"#Open Connection\" class=\"name\">Open Connection\x3c/a>.\x3c/p>\n<p>Logging into the host is done either with username and password (<a href=\"#Login\" class=\"name\">Login\x3c/a>) or with public/private key pair (<a href=\"#Login With Public Key\" class=\"name\">Login With Public key\x3c/a>).\x3c/p>\n<p>Only one connection can be active at a time. This means that most of the keywords only affect the active connection. Active connection can be changed with <a href=\"#Switch Connection\" class=\"name\">Switch Connection\x3c/a>.\x3c/p>\n<h2 id=\"Configuration\">Configuration\x3c/h2>\n<p>Default settings for all the upcoming connections can be configured on <a href=\"#Importing\" class=\"name\">library importing\x3c/a> or later with <a href=\"#Set Default Configuration\" class=\"name\">Set Default Configuration\x3c/a>. All the settings are listed further below.\x3c/p>\n<p>Using <a href=\"#Set Default Configuration\" class=\"name\">Set Default Configuration\x3c/a> does not affect the already open connections. Settings of the current connection can be configured with <a href=\"#Set Client Configuration\" class=\"name\">Set Client Configuration\x3c/a>. Settings of another, non-active connection, can be configured by first using <a href=\"#Switch Connection\" class=\"name\">Switch Connection\x3c/a> and then <a href=\"#Set Client Configuration\" class=\"name\">Set Client Configuration\x3c/a>.\x3c/p>\n<p>Most of the defaults can be overridden per connection by defining them as arguments to <a href=\"#Open Connection\" class=\"name\">Open Connection\x3c/a>. Otherwise the defaults are used.\x3c/p>\n<h3 id=\"Configurable per connection\">Configurable per connection\x3c/h3>\n<h4 id=\"Default prompt\">Default prompt\x3c/h4>\n<p>Argument <span class=\"name\">prompt\x3c/span> defines the character sequence used by <a href=\"#Read Until Prompt\" class=\"name\">Read Until Prompt\x3c/a> and must be set before that keyword can be used.\x3c/p>\n<p>If you know the prompt on the remote machine, it is recommended to set it to ease reading output from the server after using <a href=\"#Write\" class=\"name\">Write\x3c/a>. In addition to that, <a href=\"#Login\" class=\"name\">Login\x3c/a> and <a href=\"#Login With Public Key\" class=\"name\">Login With Public Key\x3c/a> can read the server output more efficiently when the prompt is set.\x3c/p>\n<h4 id=\"Default encoding\">Default encoding\x3c/h4>\n<p>Argument <span class=\"name\">encoding\x3c/span> defines the <a href=\"http://docs.python.org/2/library/codecs.html#standard-encodings\">character encoding\x3c/a> of input and output sequences. Starting from SSHLibrary 2.0, the default value is <span class=\"name\">UTF-8\x3c/span>.\x3c/p>\n<h4 id=\"Default path separator\">Default path separator\x3c/h4>\n<p>Argument <span class=\"name\">path_separator\x3c/span> must be set to the one known by the operating system and the SSH server on the remote machine. The path separator is used by keywords <a href=\"#Get File\" class=\"name\">Get File\x3c/a>, <a href=\"#Put File\" class=\"name\">Put File\x3c/a>, <a href=\"#Get Directory\" class=\"name\">Get Directory\x3c/a> and <a href=\"#Put Directory\" class=\"name\">Put Directory\x3c/a> for joining paths correctly on the remote host.\x3c/p>\n<p>The default path separator is forward slash (<span class=\"name\">/\x3c/span>) which works on Unix-like machines. On Windows the path separator to use depends on the SSH server. Some servers use forward slash and others backslash, and users need to configure the <span class=\"name\">path_separator\x3c/span> accordingly. Notice that using a backslash in Robot Framework test data requires doubling it like <span class=\"name\">\\\\\x3c/span>.\x3c/p>\n<p>Configuring the library and connection specific path separator is a new feature in SSHLibrary 2.0. Prior to it <a href=\"#Get File\" class=\"name\">Get File\x3c/a> and <a href=\"#Put File\" class=\"name\">Put File\x3c/a> had their own <span class=\"name\">path_separator\x3c/span> arguments. These keyword specific arguments were deprecated in 2.0 and will be removed in the future.\x3c/p>\n<h4 id=\"Default timeout\">Default timeout\x3c/h4>\n<p>Argument <span class=\"name\">timeout\x3c/span> is used by <a href=\"#Read Until\" class=\"name\">Read Until\x3c/a> variants. The default value is <span class=\"name\">3 seconds\x3c/span>.\x3c/p>\n<p>Value must be in Robot Framework's time format, e.g. <span class=\"name\">3\x3c/span>, <span class=\"name\">4.5s\x3c/span>, <span class=\"name\">1 minute\x3c/span> and <span class=\"name\">2 min 3 s\x3c/span> are all accepted. See section <span class=\"name\">Time Format\x3c/span> in the Robot Framework User Guide for details.\x3c/p>\n<h4 id=\"Default newline\">Default newline\x3c/h4>\n<p>Argument <span class=\"name\">newline\x3c/span> is the line break sequence used by <a href=\"#Write\" class=\"name\">Write\x3c/a> keyword and must be set according to the operating system on the remote machine. The default value is <span class=\"name\">LF\x3c/span> (same as <span class=\"name\">\\n\x3c/span>) which is used on Unix-like operating systems. With Windows remote machines, you need to set this to <span class=\"name\">CRLF\x3c/span> (<span class=\"name\">\\r\\n\x3c/span>).\x3c/p>\n<h4 id=\"Default terminal settings\">Default terminal settings\x3c/h4>\n<p>Argument <span class=\"name\">term_type\x3c/span> defines the virtual terminal type, and arguments <span class=\"name\">width\x3c/span> and <span class=\"name\">height\x3c/span> can be used to control its  virtual size.\x3c/p>\n<h3 id=\"Not configurable per connection\">Not configurable per connection\x3c/h3>\n<h4 id=\"Default loglevel\">Default loglevel\x3c/h4>\n<p>Argument <span class=\"name\">loglevel\x3c/span> sets the log level used to log the output read by <a href=\"#Read\" class=\"name\">Read\x3c/a>, <a href=\"#Read Until\" class=\"name\">Read Until\x3c/a>, <a href=\"#Read Until Prompt\" class=\"name\">Read Until Prompt\x3c/a>, <a href=\"#Read Until Regexp\" class=\"name\">Read Until Regexp\x3c/a>, <a href=\"#Write\" class=\"name\">Write\x3c/a>, <a href=\"#Write Until Expected Output\" class=\"name\">Write Until Expected Output\x3c/a>, <a href=\"#Login\" class=\"name\">Login\x3c/a> and <a href=\"#Login With Public Key\" class=\"name\">Login With Public Key\x3c/a>. The default level is <span class=\"name\">INFO\x3c/span>.\x3c/p>\n<p><span class=\"name\">loglevel\x3c/span> is not configurable per connection but can be overridden by passing it as an argument to the most of the mentioned keywords. Possible argument values are <span class=\"name\">TRACE\x3c/span>, <span class=\"name\">DEBUG\x3c/span>, <span class=\"name\">INFO\x3c/span> and <span class=\"name\">WARN\x3c/span>.\x3c/p>\n<h2 id=\"Executing commands\">Executing commands\x3c/h2>\n<p>For executing commands on the remote machine, there are two possibilities:\x3c/p>\n<ul>\n<li><a href=\"#Execute Command\" class=\"name\">Execute Command\x3c/a> and <a href=\"#Start Command\" class=\"name\">Start Command\x3c/a>. The command is executed in a new shell on the remote machine, which means that possible changes to the environment (e.g. changing working directory, setting environment variables, etc.) are not visible to the subsequent keywords.\x3c/li>\n\x3c/ul>\n<ul>\n<li><a href=\"#Write\" class=\"name\">Write\x3c/a>, <a href=\"#Write Bare\" class=\"name\">Write Bare\x3c/a>, <a href=\"#Write Until Expected Output\" class=\"name\">Write Until Expected Output\x3c/a>, <a href=\"#Read\" class=\"name\">Read\x3c/a>, <a href=\"#Read Until\" class=\"name\">Read Until\x3c/a>, <a href=\"#Read Until Prompt\" class=\"name\">Read Until Prompt\x3c/a> and <a href=\"#Read Until Regexp\" class=\"name\">Read Until Regexp\x3c/a>. These keywords operate in an interactive shell, which means that changes to the environment are visible to the subsequent keywords.\x3c/li>\n\x3c/ul>\n<h2 id=\"Interactive shells\">Interactive shells\x3c/h2>\n<p><a href=\"#Write\" class=\"name\">Write\x3c/a>, <a href=\"#Write Bare\" class=\"name\">Write Bare\x3c/a>, <a href=\"#Write Until Expected Output\" class=\"name\">Write Until Expected Output\x3c/a>, <a href=\"#Read\" class=\"name\">Read\x3c/a>, <a href=\"#Read Until\" class=\"name\">Read Until\x3c/a>, <a href=\"#Read Until Prompt\" class=\"name\">Read Until Prompt\x3c/a> and <a href=\"#Read Until Regexp\" class=\"name\">Read Until Regexp\x3c/a> can be used to interact with the server within the same shell.\x3c/p>\n<h3 id=\"Consumed output\">Consumed output\x3c/h3>\n<p>All of these keywords, except <a href=\"#Write Bare\" class=\"name\">Write Bare\x3c/a>, consume the read or the written text from the server output before returning. In practice this means that the text is removed from the server output, i.e. subsequent calls to <a href=\"#Read\" class=\"name\">Read\x3c/a> keywords do not return text that was already read. This is illustrated by the example below.\x3c/p>\n<table border=\"1\">\n<tr>\n<td><a href=\"#Write\" class=\"name\">Write\x3c/a>\x3c/td>\n<td>echo hello\x3c/td>\n<td>\x3c/td>\n<td># consumes written <span class=\"name\">echo hello\x3c/span>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${stdout}=\x3c/td>\n<td><a href=\"#Read Until\" class=\"name\">Read Until\x3c/a>\x3c/td>\n<td>hello\x3c/td>\n<td># consumes read <span class=\"name\">hello\x3c/span> and everything before it\x3c/td>\n\x3c/tr>\n<tr>\n<td><span class=\"name\">Should Contain\x3c/span>\x3c/td>\n<td>${stdout}\x3c/td>\n<td>hello\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${stdout}=\x3c/td>\n<td><a href=\"#Read\" class=\"name\">Read\x3c/a>\x3c/td>\n<td>\x3c/td>\n<td># consumes everything available\x3c/td>\n\x3c/tr>\n<tr>\n<td><span class=\"name\">Should Not Contain\x3c/span>\x3c/td>\n<td>${stdout}\x3c/td>\n<td>hello\x3c/td>\n<td># <span class=\"name\">hello\x3c/span> was already consumed earlier\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>The consumed text is logged by the keywords and their argument <span class=\"name\">loglevel\x3c/span> can be used to override <a href=\"#Default loglevel\">the default log level\x3c/a>.\x3c/p>\n<p><a href=\"#Login\" class=\"name\">Login\x3c/a> and <a href=\"#Login With Public Key\" class=\"name\">Login With Public Key\x3c/a> consume everything on the server output or if <a href=\"#Default prompt\">the prompt is set\x3c/a>, everything until the prompt.\x3c/p>\n<h3 id=\"Reading\">Reading\x3c/h3>\n<p><a href=\"#Read\" class=\"name\">Read\x3c/a>, <a href=\"#Read Until\" class=\"name\">Read Until\x3c/a>, <a href=\"#Read Until Prompt\" class=\"name\">Read Until Prompt\x3c/a> and <a href=\"#Read Until Regexp\" class=\"name\">Read Until Regexp\x3c/a> can be used to read from the server. The read text is also consumed from the server output.\x3c/p>\n<p><a href=\"#Read\" class=\"name\">Read\x3c/a> reads everything available on the server output, thus clearing it.\x3c/p>\n<p><a href=\"#Read Until\" class=\"name\">Read Until\x3c/a> variants read output up until and <b>including\x3c/b> <span class=\"name\">expected\x3c/span> text. These keywords will fail if <a href=\"#Default timeout\">the timeout\x3c/a> expires before <span class=\"name\">expected\x3c/span> is found.\x3c/p>\n<h3 id=\"Writing\">Writing\x3c/h3>\n<p><a href=\"#Write\" class=\"name\">Write\x3c/a> and <a href=\"#Write Until Expected Output\" class=\"name\">Write Until Expected Output\x3c/a> consume the written text from the server output while <a href=\"#Write Bare\" class=\"name\">Write Bare\x3c/a> does not.\x3c/p>\n<p>These keywords do not return any output triggered by the written text. To get the output, one of the <a href=\"#Read\" class=\"name\">Read\x3c/a> keywords must be explicitly used.\x3c/p>\n<h2 id=\"Pattern matching\">Pattern matching\x3c/h2>\n<p>Some keywords allow their arguments to be specified as <i>glob patterns\x3c/i> where:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>*\x3c/td>\n<td>matches anything, even an empty string\x3c/td>\n\x3c/tr>\n<tr>\n<td>?\x3c/td>\n<td>matches any single character\x3c/td>\n\x3c/tr>\n<tr>\n<td>[chars]\x3c/td>\n<td>matches any character inside square brackets (e.g. <span class=\"name\">[abc]\x3c/span> matches either <span class=\"name\">a\x3c/span>, <span class=\"name\">b\x3c/span> or <span class=\"name\">c\x3c/span>)\x3c/td>\n\x3c/tr>\n<tr>\n<td>[!chars]\x3c/td>\n<td>matches any character not inside square brackets\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Pattern matching is case-sensitive regardless the local or remote operating system. Matching is implemented using Python's <a href=\"http://docs.python.org/library/fnmatch.html\">fnmatch module\x3c/a>.\x3c/p>\n<h2 id=\"Example\">Example\x3c/h2>\n<pre>\n<b>***\x3c/b> Settings <b>***\x3c/b>\nDocumentation          This example demonstrates executing commands on a remote machine\n...                    and getting their output and the return code.\n...\n...                    Notice how connections are handled as part of the suite setup and\n...                    teardown. This saves some time when executing several test cases.\n\nLibrary                <span class=\"name\">SSHLibrary\x3c/span>\nSuite Setup            <span class=\"name\">Open Connection And Log In\x3c/span>\nSuite Teardown         <a href=\"#Close All Connections\" class=\"name\">Close All Connections\x3c/a>\n\n<b>***\x3c/b> Variables <b>***\x3c/b>\n${HOST}                localhost\n${USERNAME}            test\n${PASSWORD}            test\n\n<b>***\x3c/b> Test Cases <b>***\x3c/b>\nExecute Command And Verify Output\n    [Documentation]    <a href=\"#Execute Command\" class=\"name\">Execute Command\x3c/a> can be used to ran commands on the remote machine.\n    ...                The keyword returns the standard output by default.\n    ${output}=    <a href=\"#Execute Command\" class=\"name\">Execute Command\x3c/a>    echo Hello SSHLibrary!\n    <span class=\"name\">Should Be Equal\x3c/span>    ${output}    Hello SSHLibrary!\n\nExecute Command And Verify Return Code\n    [Documentation]    Often getting the return code of the command is enough.\n    ...                This behaviour can be adjusted as <a href=\"#Execute Command\" class=\"name\">Execute Command\x3c/a> arguments.\n    ${rc}=    <a href=\"#Execute Command\" class=\"name\">Execute Command\x3c/a>    echo Success guaranteed.    return_stdout=False    return_rc=True\n    <span class=\"name\">Should Be Equal\x3c/span>    ${rc}    ${0}\n\nExecuting Commands In An Interactive Session\n    [Documentation]    <a href=\"#Execute Command\" class=\"name\">Execute Command\x3c/a> always executes the command in a new shell.\n    ...                This means that changes to the environment are not persisted\n    ...                between subsequent <a href=\"#Execute Command\" class=\"name\">Execute Command\x3c/a> keyword calls.\n    ...                <a href=\"#Write\" class=\"name\">Write\x3c/a> and <a href=\"#Read Until\" class=\"name\">Read Until\x3c/a> variants can be used to operate in the same shell.\n    <a href=\"#Write\" class=\"name\">Write\x3c/a>    cd ..\n    <a href=\"#Write\" class=\"name\">Write\x3c/a>    echo Hello from the parent directory!\n    ${output}=    <a href=\"#Read Until\" class=\"name\">Read Until\x3c/a>    directory!\n    <span class=\"name\">Should End With\x3c/span>     ${output}    Hello from the parent directory!\n\n<b>***\x3c/b> Keywords <b>***\x3c/b>\nOpen Connection And Log In\n   <a href=\"#Open Connection\" class=\"name\">Open Connection\x3c/a>    ${HOST}\n   <a href=\"#Login\" class=\"name\">Login\x3c/a>    ${USERNAME}    ${PASSWORD}\n\x3c/pre>\n<p>Save the content as file <span class=\"name\">executing_command.txt\x3c/span> and run:\x3c/p>\n<pre>\npybot executing_commands.txt\n\x3c/pre>\n<p>You may want to override the variables from commandline to try this out on your remote machine:\x3c/p>\n<pre>\npybot -v HOST:my.server.com -v USERNAME:johndoe -v PASSWORD:secretpasswd executing_commands.txt\n\x3c/pre>","generated":"2013-11-27 17:17:21","inits":[{"args":"timeout=3 seconds, newline=LF, prompt=None, loglevel=INFO, term_type=vt100, width=80, height=24, path_separator=/, encoding=UTF-8","doc":"<p>SSHLibrary allows some import time <a href=\"#Configuration\" class=\"name\">configuration\x3c/a>.\x3c/p>\n<p>If the library is imported without any arguments, the library defaults are used:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Library\x3c/td>\n<td>SSHLibrary\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Only arguments that are given are changed. In this example, <a href=\"#Default timeout\">the timeout\x3c/a> is changed to <span class=\"name\">10 seconds\x3c/span> but other settings are left to the library defaults:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Library\x3c/td>\n<td>SSHLibrary\x3c/td>\n<td>10 seconds\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p><a href=\"#Default prompt\">Prompt\x3c/a> does not have a default value and must be explicitly set to use <a href=\"#Read Until Prompt\" class=\"name\">Read Until Prompt\x3c/a>. In this example, the prompt is set to <span class=\"name\">$\x3c/span>:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Library\x3c/td>\n<td>SSHLibrary\x3c/td>\n<td>prompt=$\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Multiple settings are possible. In this example, the library is brought into use with <a href=\"#Default newline\">newline\x3c/a> and <a href=\"#Default path separator\">path_separator\x3c/a> known by Windows:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Library\x3c/td>\n<td>SSHLibrary\x3c/td>\n<td>newline=CRLF\x3c/td>\n<td>path_separator=\\\\\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Arguments <a href=\"#Default terminal settings\"><span class=\"name\">term_type\x3c/span>\x3c/a>, <a href=\"#Default terminal settings\"><span class=\"name\">width\x3c/span>\x3c/a>, <a href=\"#Default terminal settings\"><span class=\"name\">height\x3c/span>\x3c/a>, <a href=\"#Default path separator\"><span class=\"name\">path separator\x3c/span>\x3c/a> and <a href=\"#Default encoding\"><span class=\"name\">encoding\x3c/span>\x3c/a> were added in SSHLibrary 2.0.\x3c/p>","name":"Init","shortdoc":"SSHLibrary allows some import time `configuration`."}],"keywords":[{"args":"","doc":"<p>Closes all open connections.\x3c/p>\n<p>This keyword is ought to be used either in test or suite teardown to make sure all the connections are closed before the test execution finishes.\x3c/p>\n<p>After this keyword, the connection indices returned by <a href=\"#Open Connection\" class=\"name\">Open Connection\x3c/a> are reset and start from <span class=\"name\">1\x3c/span>.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>my.server.com\x3c/td>\n\x3c/tr>\n<tr>\n<td>Open Connection\x3c/td>\n<td>build.local.net\x3c/td>\n\x3c/tr>\n<tr>\n<td># Do something with the connections\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>[Teardown]\x3c/td>\n<td>Close all connections\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Close All Connections","shortdoc":"Closes all open connections."},{"args":"","doc":"<p>Closes the current connection.\x3c/p>\n<p>No other connection is made active by this keyword. Manually use <a href=\"#Switch Connection\" class=\"name\">Switch Connection\x3c/a> to switch to another connection.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>my.server.com\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Login\x3c/td>\n<td>johndoe\x3c/td>\n<td>secretpasswd\x3c/td>\n\x3c/tr>\n<tr>\n<td>Get File\x3c/td>\n<td>results.txt\x3c/td>\n<td>/tmp\x3c/td>\n\x3c/tr>\n<tr>\n<td>Close Connection\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td># Do something with /tmp/results.txt\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Close Connection","shortdoc":"Closes the current connection."},{"args":"path","doc":"<p>Fails if the given <span class=\"name\">path\x3c/span> does not point to an existing directory.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Directory Should Exist\x3c/td>\n<td>/usr/share/man\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Note that symlinks are followed:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Directory Should Exist\x3c/td>\n<td>/usr/local/man\x3c/td>\n<td># Points to /usr/share/man/\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>New in SSHLibrary 2.0.\x3c/p>","name":"Directory Should Exist","shortdoc":"Fails if the given `path` does not point to an existing directory."},{"args":"path","doc":"<p>Fails if the given <span class=\"name\">path\x3c/span> points to an existing directory.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Directory Should Not Exist\x3c/td>\n<td>/non/existing\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Note that this keyword follows symlinks. Thus the example fails if <span class=\"name\">/non/existing\x3c/span> is a link that points to an existing directory.\x3c/p>\n<p>New in SSHLibrary 2.0.\x3c/p>","name":"Directory Should Not Exist","shortdoc":"Fails if the given `path` points to an existing directory."},{"args":"logfile","doc":"<p>Enables logging of SSH protocol output to given <span class=\"name\">logfile\x3c/span>.\x3c/p>\n<p>All the existing and upcoming connections are logged onwards from the moment the keyword was called.\x3c/p>\n<p><span class=\"name\">logfile\x3c/span> is path to a file that is writable by the current local user. If the file already exists, it will be overwritten.\x3c/p>\n<p><b>Note:\x3c/b> This keyword only works with Python, i.e. when executing tests with <span class=\"name\">pybot\x3c/span>.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>my.server.com\x3c/td>\n<td># Not logged\x3c/td>\n\x3c/tr>\n<tr>\n<td>Enable SSH Logging\x3c/td>\n<td>myserver.log\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Login\x3c/td>\n<td>johndoe\x3c/td>\n<td>secretpasswd\x3c/td>\n\x3c/tr>\n<tr>\n<td>Open Connection\x3c/td>\n<td>build.local.net\x3c/td>\n<td># Logged\x3c/td>\n\x3c/tr>\n<tr>\n<td># Do something with the connections\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td># Check myserver.log for detailed debug information\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Enable Ssh Logging","shortdoc":"Enables logging of SSH protocol output to given `logfile`."},{"args":"command, return_stdout=True, return_stderr=False, return_rc=False","doc":"<p>Executes <span class=\"name\">command\x3c/span> on the remote machine and returns its outputs.\x3c/p>\n<p>This keyword executes the <span class=\"name\">command\x3c/span> and returns after the execution has been finished. Use <a href=\"#Start Command\" class=\"name\">Start Command\x3c/a> if the command should be started on the background.\x3c/p>\n<p>By default, only the standard output is returned:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${stdout}=\x3c/td>\n<td>Execute Command\x3c/td>\n<td>echo 'Hello John!'\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${stdout}\x3c/td>\n<td>Hello John!\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Arguments <span class=\"name\">return_stdout\x3c/span>, <span class=\"name\">return_stderr\x3c/span> and <span class=\"name\">return_rc\x3c/span> are used to specify, what is returned by this keyword. If several arguments evaluate to true, multiple values are returned. Non-empty strings, except <span class=\"name\">false\x3c/span> and <span class=\"name\">False\x3c/span>, evaluate to true.\x3c/p>\n<p>If errors are needed as well, set the respective argument value to true:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${stdout}\x3c/td>\n<td>${stderr}=\x3c/td>\n<td>Execute Command\x3c/td>\n<td>echo 'Hello John!'\x3c/td>\n<td>return_stderr=True\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Empty\x3c/td>\n<td>${stderr}\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Often checking the return code is enough:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${rc}=\x3c/td>\n<td>Execute Command\x3c/td>\n<td>echo 'Hello John!'\x3c/td>\n<td>return_stdout=False\x3c/td>\n<td>return_rc=True\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal As Integers\x3c/td>\n<td>${rc}\x3c/td>\n<td>0\x3c/td>\n<td># succeeded\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>The <span class=\"name\">command\x3c/span> is always executed in a new shell. Thus possible changes to the environment (e.g. changing working directory) are not visible to the later keywords:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${pwd}=\x3c/td>\n<td>Execute Command\x3c/td>\n<td>pwd\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${pwd}\x3c/td>\n<td>/home/johndoe\x3c/td>\n\x3c/tr>\n<tr>\n<td>Execute Command\x3c/td>\n<td>cd /tmp\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${pwd}=\x3c/td>\n<td>Execute Command\x3c/td>\n<td>pwd\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${pwd}\x3c/td>\n<td>/home/johndoe\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p><a href=\"#Write\" class=\"name\">Write\x3c/a> and <a href=\"#Read\" class=\"name\">Read\x3c/a> can be used for <a href=\"#Interactive shells\">running multiple commands in the same shell\x3c/a>.\x3c/p>\n<p>This keyword logs the executed command and its exit status with log level <span class=\"name\">INFO\x3c/span>.\x3c/p>","name":"Execute Command","shortdoc":"Executes `command` on the remote machine and returns its outputs."},{"args":"path","doc":"<p>Fails if the given <span class=\"name\">path\x3c/span> does NOT point to an existing file.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>File Should Exist\x3c/td>\n<td>/boot/initrd.img\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Note that symlinks are followed:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>File Should Exist\x3c/td>\n<td>/initrd.img\x3c/td>\n<td># Points to boot/initrd.img\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>New in SSHLibrary 2.0.\x3c/p>","name":"File Should Exist","shortdoc":"Fails if the given `path` does NOT point to an existing file."},{"args":"path","doc":"<p>Fails if the given <span class=\"name\">path\x3c/span> points to an existing file.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>File Should Not Exist\x3c/td>\n<td>/non/existing\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Note that this keyword follows symlinks. Thus the example fails if <span class=\"name\">/non/existing\x3c/span> is a link that points an existing file.\x3c/p>\n<p>New in SSHLibrary 2.0.\x3c/p>","name":"File Should Not Exist","shortdoc":"Fails if the given `path` points to an existing file."},{"args":"index_or_alias=None, index=False, host=False, alias=False, port=False, timeout=False, newline=False, prompt=False, term_type=False, width=False, height=False, encoding=False","doc":"<p>Return information about the connection.\x3c/p>\n<p>Connection is not changed by this keyword, use <a href=\"#Switch Connection\" class=\"name\">Switch Connection\x3c/a> to change the active connection.\x3c/p>\n<p>If <span class=\"name\">index_or_alias\x3c/span> is not given, the information of the current connection is returned.\x3c/p>\n<p>This keyword returns an object that has the following attributes:\x3c/p>\n<table border=\"1\">\n<tr>\n<th>Name\x3c/th>\n<th>Type\x3c/th>\n<th>Explanation\x3c/th>\n\x3c/tr>\n<tr>\n<td>index\x3c/td>\n<td>integer\x3c/td>\n<td>Number of the connection. Numbering starts from <span class=\"name\">1\x3c/span>.\x3c/td>\n\x3c/tr>\n<tr>\n<td>host\x3c/td>\n<td>string\x3c/td>\n<td>Destination hostname.\x3c/td>\n\x3c/tr>\n<tr>\n<td>alias\x3c/td>\n<td>string\x3c/td>\n<td>An optional alias given when creating the connection.\x3c/td>\n\x3c/tr>\n<tr>\n<td>port\x3c/td>\n<td>integer\x3c/td>\n<td>Destination port.\x3c/td>\n\x3c/tr>\n<tr>\n<td>timeout\x3c/td>\n<td>string\x3c/td>\n<td><a href=\"#Default timeout\">Timeout\x3c/a> length in textual representation.\x3c/td>\n\x3c/tr>\n<tr>\n<td>newline\x3c/td>\n<td>string\x3c/td>\n<td><a href=\"#Default newline\">The line break sequence\x3c/a> used by <a href=\"#Write\" class=\"name\">Write\x3c/a> keyword.\x3c/td>\n\x3c/tr>\n<tr>\n<td>prompt\x3c/td>\n<td>string\x3c/td>\n<td><a href=\"#Default prompt\">Prompt character sequence\x3c/a> for <a href=\"#Read Until Prompt\" class=\"name\">Read Until Prompt\x3c/a>.\x3c/td>\n\x3c/tr>\n<tr>\n<td>term_type\x3c/td>\n<td>string\x3c/td>\n<td>Type of the <a href=\"#Default terminal settings\">virtual terminal\x3c/a>.\x3c/td>\n\x3c/tr>\n<tr>\n<td>width\x3c/td>\n<td>integer\x3c/td>\n<td>Width of the <a href=\"#Default terminal settings\">virtual terminal\x3c/a>.\x3c/td>\n\x3c/tr>\n<tr>\n<td>height\x3c/td>\n<td>integer\x3c/td>\n<td>Height of the <a href=\"#Default terminal settings\">virtual terminal\x3c/a>.\x3c/td>\n\x3c/tr>\n<tr>\n<td>path_separator\x3c/td>\n<td>string\x3c/td>\n<td><a href=\"#Default path separator\">The path separator\x3c/a> used on the remote host.\x3c/td>\n\x3c/tr>\n<tr>\n<td>encoding\x3c/td>\n<td>string\x3c/td>\n<td><a href=\"#Default encoding\">The encoding\x3c/a> used for inputs and outputs.\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>If there is no connection, an object having <span class=\"name\">index\x3c/span> and <span class=\"name\">host\x3c/span> as <span class=\"name\">None\x3c/span> is returned, rest of its attributes having their values as configuration defaults.\x3c/p>\n<p>If you want the information for all the open connections, use <a href=\"#Get Connections\" class=\"name\">Get Connections\x3c/a>.\x3c/p>\n<p>Getting connection information of the current connection:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>far.server.com\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Open Connection\x3c/td>\n<td>near.server.com\x3c/td>\n<td>prompt=&gt;&gt;\x3c/td>\n<td># Current connection\x3c/td>\n\x3c/tr>\n<tr>\n<td>${nearhost}=\x3c/td>\n<td>Get Connection\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${nearhost.host}\x3c/td>\n<td>near.server.com\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${nearhost.index}\x3c/td>\n<td>2\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${nearhost.prompt}\x3c/td>\n<td>&gt;&gt;\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${nearhost.term_type}\x3c/td>\n<td>vt100\x3c/td>\n<td># From defaults\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Getting connection information using an index:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>far.server.com\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Open Connection\x3c/td>\n<td>near.server.com\x3c/td>\n<td># Current connection\x3c/td>\n\x3c/tr>\n<tr>\n<td>${farhost}=\x3c/td>\n<td>Get Connection\x3c/td>\n<td>1\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${farhost.host}\x3c/td>\n<td>far.server.com\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Getting connection information using an alias:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>far.server.com\x3c/td>\n<td>alias=far\x3c/td>\n\x3c/tr>\n<tr>\n<td>Open Connection\x3c/td>\n<td>near.server.com\x3c/td>\n<td># Current connection\x3c/td>\n\x3c/tr>\n<tr>\n<td>${farhost}=\x3c/td>\n<td>Get Connection\x3c/td>\n<td>far\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${farhost.host}\x3c/td>\n<td>far.server.com\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${farhost.alias}\x3c/td>\n<td>far\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>This keyword can also return plain connection attributes instead of the whole connection object. This can be adjusted using the boolean arguments <span class=\"name\">index\x3c/span>, <span class=\"name\">host\x3c/span>, <span class=\"name\">alias\x3c/span>, and so on, that correspond to the attribute names of the object. If such arguments are given, and they evaluate to true (e.g. any non-empty string except <span class=\"name\">false\x3c/span> or <span class=\"name\">False\x3c/span>), only the respective connection attributes are returned. Note that attributes are always returned in the same order arguments are specified in the signature.\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>my.server.com\x3c/td>\n<td>alias=example\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${host}=\x3c/td>\n<td>Get Connection\x3c/td>\n<td>host=True\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${host}\x3c/td>\n<td>my.server.com\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${host}\x3c/td>\n<td>${alias}=\x3c/td>\n<td>Get Connection\x3c/td>\n<td>host=yes\x3c/td>\n<td>alias=please\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${host}\x3c/td>\n<td>my.server.com\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${alias}\x3c/td>\n<td>example\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Getting only certain attributes is especially useful when using this library via the Remote library interface. This interface does not support returning custom objects, but individual attributes can be returned just fine.\x3c/p>\n<p>This keyword logs the connection information with log level <span class=\"name\">INFO\x3c/span>.\x3c/p>\n<p>New in SSHLibrary 2.0.\x3c/p>","name":"Get Connection","shortdoc":"Return information about the connection."},{"args":"","doc":"<p>Return information about all the open connections.\x3c/p>\n<p>This keyword returns a list of objects that are identical to the ones returned by <a href=\"#Get Connection\" class=\"name\">Get Connection\x3c/a>.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>near.server.com\x3c/td>\n<td>timeout=10s\x3c/td>\n\x3c/tr>\n<tr>\n<td>Open Connection\x3c/td>\n<td>far.server.com\x3c/td>\n<td>timeout=5s\x3c/td>\n\x3c/tr>\n<tr>\n<td>${nearhost}\x3c/td>\n<td>${farhost}=\x3c/td>\n<td>Get Connections\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${nearhost.host}\x3c/td>\n<td>near.server.com\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal As Integers\x3c/td>\n<td>${nearhost.timeout}\x3c/td>\n<td>10\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal As Integers\x3c/td>\n<td>${farhost.port}\x3c/td>\n<td>22\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal As Integers\x3c/td>\n<td>${farhost.timeout}\x3c/td>\n<td>5\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>This keyword logs the information of connections with log level <span class=\"name\">INFO\x3c/span>.\x3c/p>","name":"Get Connections","shortdoc":"Return information about all the open connections."},{"args":"source, destination=., recursive=False","doc":"<p>Downloads a directory, including its content, from the remote machine to the local machine.\x3c/p>\n<p><span class=\"name\">source\x3c/span> is a path on the remote machine. Both absolute paths and paths relative to the current working directory are supported.\x3c/p>\n<p><span class=\"name\">destination\x3c/span> is the target path on the local machine.  Both absolute paths and paths relative to the current working directory are supported.\x3c/p>\n<p><span class=\"name\">recursive\x3c/span> specifies, whether to recursively download all subdirectories inside <span class=\"name\">source\x3c/span>. Subdirectories are downloaded if the argument value evaluates to true.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Get Directory\x3c/td>\n<td>/var/logs\x3c/td>\n<td>/tmp\x3c/td>\n\x3c/tr>\n<tr>\n<td>Get Directory\x3c/td>\n<td>/var/logs\x3c/td>\n<td>/tmp/non/existing\x3c/td>\n\x3c/tr>\n<tr>\n<td>Get Directory\x3c/td>\n<td>/var/logs\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Get Directory\x3c/td>\n<td>/var/logs\x3c/td>\n<td>recursive=True\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>The local <span class=\"name\">destination\x3c/span> is created as following:\x3c/p>\n<p>1. If <span class=\"name\">destination\x3c/span> is an existing path on the local machine, <span class=\"name\">source\x3c/span> directory is downloaded into it.\x3c/p>\n<p>2. If <span class=\"name\">destination\x3c/span> does not exist on the local machine, it is created and the content of <span class=\"name\">source\x3c/span> directory is downloaded into it.\x3c/p>\n<p>3. If <span class=\"name\">destination\x3c/span> is not given, <span class=\"name\">source\x3c/span> directory is downloaded into the current working directory on the local machine. This is typically the directory where the test execution was started and thus accessible using built-in <span class=\"name\">${EXECDIR}\x3c/span> variable.\x3c/p>\n<p>New in SSHLibrary 2.0.\x3c/p>\n<p>See also <a href=\"#Get File\" class=\"name\">Get File\x3c/a>.\x3c/p>","name":"Get Directory","shortdoc":"Downloads a directory, including its content, from the remote machine to the local machine."},{"args":"source, destination=., path_separator=","doc":"<p>Downloads file(s) from the remote machine to the local machine.\x3c/p>\n<p><span class=\"name\">source\x3c/span> is a path on the remote machine. Both absolute paths and paths relative to the current working directory are supported. If the source contains wildcards explained in <a href=\"#Pattern matching\" class=\"name\">pattern matching\x3c/a>, all files matching it are downloaded. In this case <span class=\"name\">destination\x3c/span> must always be a directory.\x3c/p>\n<p><span class=\"name\">destination\x3c/span> is the target path on the local machine. Both absolute paths and paths relative to the current working directory are supported.\x3c/p>\n<p><span class=\"name\">path_separator\x3c/span> is <b>deprecated\x3c/b> in SSHLibrary 2.0. Use <a href=\"#Default path separator\">the library or the connection specific setting\x3c/a> instead.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Get File\x3c/td>\n<td>/var/log/auth.log\x3c/td>\n<td>/tmp/\x3c/td>\n\x3c/tr>\n<tr>\n<td>Get File\x3c/td>\n<td>/tmp/example.txt\x3c/td>\n<td>C:\\\\temp\\\\new_name.txt\x3c/td>\n\x3c/tr>\n<tr>\n<td>Get File\x3c/td>\n<td>/path/to/*.txt\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>The local <span class=\"name\">destination\x3c/span> is created using the rules explained below:\x3c/p>\n<p>1. If the <span class=\"name\">destination\x3c/span> is an existing file, the <span class=\"name\">source\x3c/span> file is downloaded over it.\x3c/p>\n<p>2. If the <span class=\"name\">destination\x3c/span> is an existing directory, the <span class=\"name\">source\x3c/span> file is downloaded into it. Possible file with the same name is overwritten.\x3c/p>\n<p>3. If the <span class=\"name\">destination\x3c/span> does not exist and it ends with the path separator of the local operating system, it is considered a directory. The directory is then created and the <span class=\"name\">source\x3c/span> file is downloaded into it. Possible missing intermediate directories are also created.\x3c/p>\n<p>4. If the <span class=\"name\">destination\x3c/span> does not exist and does not end with the local path separator, it is considered a file. The <span class=\"name\">source\x3c/span> file is downloaded and saved using that file name, and possible missing intermediate directories are also created.\x3c/p>\n<p>5. If <span class=\"name\">destination\x3c/span> is not given, the current working directory on the local machine is used as the destination. This is typically the directory where the test execution was started and thus accessible using built-in <span class=\"name\">${EXECDIR}\x3c/span> variable.\x3c/p>\n<p>Argument <span class=\"name\">path_separator\x3c/span> was deprecated in SSHLibrary 2.0.\x3c/p>\n<p>See also <a href=\"#Get Directory\" class=\"name\">Get Directory\x3c/a>.\x3c/p>","name":"Get File","shortdoc":"Downloads file(s) from the remote machine to the local machine."},{"args":"path, pattern=None, absolute=False","doc":"<p>A wrapper for <a href=\"#List Directory\" class=\"name\">List Directory\x3c/a> that returns only directories.\x3c/p>\n<p>New in SSHLibrary 2.0.\x3c/p>","name":"List Directories In Directory","shortdoc":"A wrapper for `List Directory` that returns only directories."},{"args":"path, pattern=None, absolute=False","doc":"<p>Returns and logs items in the remote <span class=\"name\">path\x3c/span>, optionally filtered with <span class=\"name\">pattern\x3c/span>.\x3c/p>\n<p><span class=\"name\">path\x3c/span> is a path on the remote machine. Both absolute paths and paths relative to the current working directory are supported. If <span class=\"name\">path\x3c/span> is a symlink, it is followed.\x3c/p>\n<p>Item names are returned in case-sensitive alphabetical order, e.g. ['A Name', 'Second', 'a lower case name', 'one more']. Implicit directories <span class=\"name\">.\x3c/span> and <span class=\"name\">..\x3c/span> are not returned. The returned items are automatically logged.\x3c/p>\n<p>By default, the item names are returned relative to the given remote path (e.g. <span class=\"name\">file.txt\x3c/span>). If you want them be returned in the absolute format (e.g. <span class=\"name\">/home/johndoe/file.txt\x3c/span>), set the <span class=\"name\">absolute\x3c/span> argument to any non-empty string.\x3c/p>\n<p>If <span class=\"name\">pattern\x3c/span> is given, only items matching it are returned. The pattern matching syntax is explained in <a href=\"#Pattern matching\" class=\"name\">pattern matching\x3c/a>.\x3c/p>\n<p>Examples (using also other <a href=\"#List Directory\" class=\"name\">List Directory\x3c/a> variants):\x3c/p>\n<table border=\"1\">\n<tr>\n<td>@{items}=\x3c/td>\n<td>List Directory\x3c/td>\n<td>/home/johndoe\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>@{files}=\x3c/td>\n<td>List Files In Directory\x3c/td>\n<td>/tmp\x3c/td>\n<td>*.txt\x3c/td>\n<td>absolute=True\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>If you are only interested in directories or files, use <a href=\"#List Files In Directory\" class=\"name\">List Files In Directory\x3c/a> or <a href=\"#List Directories In Directory\" class=\"name\">List Directories In Directory\x3c/a>, respectively.\x3c/p>\n<p>New in SSHLibrary 2.0.\x3c/p>","name":"List Directory","shortdoc":"Returns and logs items in the remote `path`, optionally filtered with `pattern`."},{"args":"path, pattern=None, absolute=False","doc":"<p>A wrapper for <a href=\"#List Directory\" class=\"name\">List Directory\x3c/a> that returns only files.\x3c/p>\n<p>New in SSHLibrary 2.0.\x3c/p>","name":"List Files In Directory","shortdoc":"A wrapper for `List Directory` that returns only files."},{"args":"username, password, delay=0.5 seconds","doc":"<p>Logs into the SSH server with the given <span class=\"name\">username\x3c/span> and <span class=\"name\">password\x3c/span>.\x3c/p>\n<p>Connection must be opened before using this keyword.\x3c/p>\n<p>This keyword reads, returns and logs the server output after logging in. If the <a href=\"#Default prompt\">prompt is set\x3c/a>, everything until the prompt is read. Otherwise the output is read using the <a href=\"#Read\" class=\"name\">Read\x3c/a> keyword with the given <span class=\"name\">delay\x3c/span>. The output is logged using the <a href=\"#Default loglevel\">default log level\x3c/a>.\x3c/p>\n<p>Example that logs in and returns the output:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>linux.server.com\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${output}=\x3c/td>\n<td>Login\x3c/td>\n<td>johndoe\x3c/td>\n<td>secretpasswd\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${output}\x3c/td>\n<td>Last login at\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Example that logs in and returns everything until the prompt:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>linux.server.com\x3c/td>\n<td>prompt=$\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${output}=\x3c/td>\n<td>Login\x3c/td>\n<td>johndoe\x3c/td>\n<td>secretpasswd\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${output}\x3c/td>\n<td>johndoe@linux:~$\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Argument <span class=\"name\">delay\x3c/span> was added in SSHLibrary 2.0.\x3c/p>","name":"Login","shortdoc":"Logs into the SSH server with the given `username` and `password`."},{"args":"username, keyfile, password=, delay=0.5 seconds","doc":"<p>Logs into the SSH server using key-based authentication.\x3c/p>\n<p>Connection must be opened before using this keyword.\x3c/p>\n<p><span class=\"name\">username\x3c/span> is the username on the remote machine.\x3c/p>\n<p><span class=\"name\">keyfile\x3c/span> is a path to a valid OpenSSH private key file on the local filesystem.\x3c/p>\n<p><span class=\"name\">password\x3c/span> is used to unlock the <span class=\"name\">keyfile\x3c/span> if unlocking is required.\x3c/p>\n<p>This keyword reads, returns and logs the server output after logging in. If the <a href=\"#Default prompt\">prompt is set\x3c/a>, everything until the prompt is read. Otherwise the output is read using the <a href=\"#Read\" class=\"name\">Read\x3c/a> keyword with the given <span class=\"name\">delay\x3c/span>. The output is logged using the <a href=\"#Default loglevel\">default log level\x3c/a>.\x3c/p>\n<p>Example that logs in using a private key and returns the output:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>linux.server.com\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${output}=\x3c/td>\n<td>Login With Public Key\x3c/td>\n<td>johndoe\x3c/td>\n<td>/home/johndoe/.ssh/id_rsa\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${motd}\x3c/td>\n<td>Last login at\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>With locked private keys, the keyring <span class=\"name\">password\x3c/span> is required:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>linux.server.com\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Login With Public Key\x3c/td>\n<td>johndoe\x3c/td>\n<td>/home/johndoe/.ssh/id_dsa\x3c/td>\n<td>keyringpasswd\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Argument <span class=\"name\">delay\x3c/span> was added in SSHLibrary 2.0.\x3c/p>","name":"Login With Public Key","shortdoc":"Logs into the SSH server using key-based authentication."},{"args":"host, alias=None, port=22, timeout=None, newline=None, prompt=None, term_type=None, width=None, height=None, path_separator=None, encoding=None","doc":"<p>Opens a new SSH connection to the given <span class=\"name\">host\x3c/span> and <span class=\"name\">port\x3c/span>.\x3c/p>\n<p>The new connection is made active. Possible existing connections are left open in the background.\x3c/p>\n<p>This keyword returns the index of the new connection which can be used later to switch back to it. Indices start from <span class=\"name\">1\x3c/span> and are reset when <a href=\"#Close All Connections\" class=\"name\">Close All Connections\x3c/a> is used.\x3c/p>\n<p>Optional <span class=\"name\">alias\x3c/span> can be given for the connection and can be used for switching between connections, similarly as the index. See <a href=\"#Switch Connection\" class=\"name\">Switch Connection\x3c/a> for more details.\x3c/p>\n<p>Connection parameters, like <a href=\"#Default timeout\"><span class=\"name\">timeout\x3c/span>\x3c/a> and <a href=\"#Default newline\"><span class=\"name\">newline\x3c/span>\x3c/a> are documented in <a href=\"#Configuration\" class=\"name\">configuration\x3c/a>. If they are not defined as arguments, <a href=\"#Configuration\">the library defaults\x3c/a> are used for the connection.\x3c/p>\n<p>All the arguments, except <span class=\"name\">host\x3c/span>, <span class=\"name\">alias\x3c/span> and <span class=\"name\">port\x3c/span> can be later updated with <a href=\"#Set Client Configuration\" class=\"name\">Set Client Configuration\x3c/a>.\x3c/p>\n<p>Starting from SSHLibrary 1.1, a shell is automatically opened by this keyword.\x3c/p>\n<p>Port <span class=\"name\">22\x3c/span> is assumed by default:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${index}=\x3c/td>\n<td>Open Connection\x3c/td>\n<td>my.server.com\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Non-standard port may be given as an argument:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${index}=\x3c/td>\n<td>Open Connection\x3c/td>\n<td>192.168.1.1\x3c/td>\n<td>port=23\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Aliases are handy, if you need to switch back to the connection later:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>my.server.com\x3c/td>\n<td>alias=myserver\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td># Do something with my.server.com\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Open Connection\x3c/td>\n<td>192.168.1.1\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Switch Connection\x3c/td>\n<td>myserver\x3c/td>\n<td>\x3c/td>\n<td># Back to my.server.com\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Settings can be overridden per connection, otherwise the ones set on <a href=\"#Importing\" class=\"name\">library importing\x3c/a> or with <a href=\"#Set Default Configuration\" class=\"name\">Set Default Configuration\x3c/a> are used:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>192.168.1.1\x3c/td>\n<td>timeout=1 hour\x3c/td>\n<td>newline=CRLF\x3c/td>\n\x3c/tr>\n<tr>\n<td># Do something with the connection\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Open Connection\x3c/td>\n<td>my.server.com\x3c/td>\n<td># Default timeout\x3c/td>\n<td># Default line breaks\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p><a href=\"#Default terminal settings\">The terminal settings\x3c/a> are also configurable per connection:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>192.168.1.1\x3c/td>\n<td>term_type=ansi\x3c/td>\n<td>width=40\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Arguments <a href=\"#Default path separator\"><span class=\"name\">path_separator\x3c/span>\x3c/a> and <a href=\"#Default encoding\"><span class=\"name\">encoding\x3c/span>\x3c/a> were added in SSHLibrary 2.0.\x3c/p>","name":"Open Connection","shortdoc":"Opens a new SSH connection to the given `host` and `port`."},{"args":"source, destination=., mode=0744, newline=, recursive=False","doc":"<p>Uploads a directory, including its content, from the local machine to the remote machine.\x3c/p>\n<p><span class=\"name\">source\x3c/span> is the path on the local machine. Both absolute paths and paths relative to the current working directory are supported.\x3c/p>\n<p><span class=\"name\">destination\x3c/span> is the target path on the remote machine. Both absolute paths and paths relative to the current working directory are supported.\x3c/p>\n<p><span class=\"name\">mode\x3c/span> can be used to set the target file permission. Numeric values are accepted. The default value is <span class=\"name\">0744\x3c/span> (-rwxr--r--).\x3c/p>\n<p><span class=\"name\">newline\x3c/span> can be used to force the line break characters that are written to the remote files. Valid values are <span class=\"name\">LF\x3c/span> and <span class=\"name\">CRLF\x3c/span>.\x3c/p>\n<p><span class=\"name\">recursive\x3c/span> specifies, whether to recursively upload all subdirectories inside <span class=\"name\">source\x3c/span>. Subdirectories are uploaded if the argument value evaluates to true.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Put Directory\x3c/td>\n<td>/var/logs\x3c/td>\n<td>/tmp\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Put Directory\x3c/td>\n<td>/var/logs\x3c/td>\n<td>/tmp/non/existing\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Put Directory\x3c/td>\n<td>/var/logs\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Put Directory\x3c/td>\n<td>/var/logs\x3c/td>\n<td>recursive=True\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Put Directory\x3c/td>\n<td>/var/logs\x3c/td>\n<td>/home/groups/robot\x3c/td>\n<td>mode=0770\x3c/td>\n\x3c/tr>\n<tr>\n<td>Put Directory\x3c/td>\n<td>/var/logs\x3c/td>\n<td>newline=CRLF\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>The remote <span class=\"name\">destination\x3c/span> is created as following:\x3c/p>\n<p>1. If <span class=\"name\">destination\x3c/span> is an existing path on the remote machine, <span class=\"name\">source\x3c/span> directory is uploaded into it.\x3c/p>\n<p>2. If <span class=\"name\">destination\x3c/span> does not exist on the remote machine, it is created and the content of <span class=\"name\">source\x3c/span> directory is uploaded into it.\x3c/p>\n<p>3. If <span class=\"name\">destination\x3c/span> is not given, <span class=\"name\">source\x3c/span> directory is typically uploaded to user's home directory on the remote machine.\x3c/p>\n<p>New in SSHLibrary 2.0.\x3c/p>\n<p>See also <a href=\"#Put File\" class=\"name\">Put File\x3c/a>.\x3c/p>","name":"Put Directory","shortdoc":"Uploads a directory, including its content, from the local machine to the remote machine."},{"args":"source, destination=., mode=0744, newline=, path_separator=","doc":"<p>Uploads file(s) from the local machine to the remote machine.\x3c/p>\n<p><span class=\"name\">source\x3c/span> is the path on the local machine. Both absolute paths and paths relative to the current working directory are supported. If the source contains wildcards explained in <a href=\"#Pattern matching\" class=\"name\">pattern matching\x3c/a>, all files matching it are uploaded. In this case <span class=\"name\">destination\x3c/span> must always be a directory.\x3c/p>\n<p><span class=\"name\">destination\x3c/span> is the target path on the remote machine. Both absolute paths and paths relative to the current working directory are supported.\x3c/p>\n<p><span class=\"name\">mode\x3c/span> can be used to set the target file permission. Numeric values are accepted. The default value is <span class=\"name\">0744\x3c/span> (-rwxr--r--).\x3c/p>\n<p><span class=\"name\">newline\x3c/span> can be used to force the line break characters that are written to the remote files. Valid values are <span class=\"name\">LF\x3c/span> and <span class=\"name\">CRLF\x3c/span>.\x3c/p>\n<p><span class=\"name\">path_separator\x3c/span> is <b>deprecated\x3c/b> in SSHLibrary 2.0. Use <a href=\"#Default path separator\">the library or the connection specific setting\x3c/a> instead.\x3c/p>\n<p>Examples:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Put File\x3c/td>\n<td>/path/to/*.txt\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Put File\x3c/td>\n<td>/path/to/*.txt\x3c/td>\n<td>/home/groups/robot\x3c/td>\n<td>mode=0770\x3c/td>\n\x3c/tr>\n<tr>\n<td>Put File\x3c/td>\n<td>/path/to/*.txt\x3c/td>\n<td>newline=CRLF\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>The remote <span class=\"name\">destination\x3c/span> is created as following:\x3c/p>\n<p>1. If <span class=\"name\">destination\x3c/span> is an existing file, <span class=\"name\">source\x3c/span> file is uploaded over it.\x3c/p>\n<p>2. If <span class=\"name\">destination\x3c/span> is an existing directory, <span class=\"name\">source\x3c/span> file is uploaded into it. Possible file with same name is overwritten.\x3c/p>\n<p>3. If <span class=\"name\">destination\x3c/span> does not exist and it ends with <a href=\"#Default path separator\">the path separator\x3c/a>, it is considered a directory. The directory is then created and <span class=\"name\">source\x3c/span> file uploaded into it. Possibly missing intermediate directories are also created.\x3c/p>\n<p>4. If <span class=\"name\">destination\x3c/span> does not exist and it does not end with <a href=\"#Default path separator\">the path separator\x3c/a>, it is considered a file. If the path to the file does not exist, it is created.\x3c/p>\n<p>5. If <span class=\"name\">destination\x3c/span> is not given, the user's home directory on the remote machine is used as the destination.\x3c/p>\n<p>Argument <span class=\"name\">path_separator\x3c/span> was deprecated in SSHLibrary 2.0.\x3c/p>\n<p>See also <a href=\"#Put Directory\" class=\"name\">Put Directory\x3c/a>.\x3c/p>","name":"Put File","shortdoc":"Uploads file(s) from the local machine to the remote machine."},{"args":"loglevel=None, delay=None","doc":"<p>Consumes and returns everything available on the server output.\x3c/p>\n<p>If <span class=\"name\">delay\x3c/span> is given, this keyword waits that amount of time and reads output again. This wait-read cycle is repeated as long as further reads return more output or the <a href=\"#Default timeout\">timeout\x3c/a> expires. <span class=\"name\">delay\x3c/span> must be given in Robot Framework's time format (e.g. <span class=\"name\">5\x3c/span>, <span class=\"name\">4.5s\x3c/span>, <span class=\"name\">3 minutes\x3c/span>, <span class=\"name\">2 min 3 sec\x3c/span>) that is explained in detail in the User Guide.\x3c/p>\n<p>This keyword is most useful for reading everything from the server output, thus clearing it.\x3c/p>\n<p>The read output is logged. <span class=\"name\">loglevel\x3c/span> can be used to override the <a href=\"#Default loglevel\">default log level\x3c/a>.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>my.server.com\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Login\x3c/td>\n<td>johndoe\x3c/td>\n<td>secretpasswd\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Write\x3c/td>\n<td>sudo su -\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${output}=\x3c/td>\n<td>Read\x3c/td>\n<td>delay=0.5s\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${output}\x3c/td>\n<td>[sudo] password for johndoe:\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Write\x3c/td>\n<td>secretpasswd\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${output}=\x3c/td>\n<td>Read\x3c/td>\n<td>loglevel=WARN\x3c/td>\n<td># Shown in the console due to loglevel\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${output}\x3c/td>\n<td>root@\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>See <a href=\"#Interactive shells\" class=\"name\">interactive shells\x3c/a> for more information about writing and reading in general.\x3c/p>\n<p>Argument <span class=\"name\">delay\x3c/span> was added in SSHLibrary 2.0.\x3c/p>","name":"Read","shortdoc":"Consumes and returns everything available on the server output."},{"args":"return_stdout=True, return_stderr=False, return_rc=False","doc":"<p>Returns outputs of the most recent started command.\x3c/p>\n<p>At least one command must have been started using <a href=\"#Start Command\" class=\"name\">Start Command\x3c/a> before this keyword can be used.\x3c/p>\n<p>By default, only the standard output of the started command is returned:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Start Command\x3c/td>\n<td>echo 'Hello John!'\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${stdout}=\x3c/td>\n<td>Read Command Output\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${stdout}\x3c/td>\n<td>Hello John!\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Arguments <span class=\"name\">return_stdout\x3c/span>, <span class=\"name\">return_stderr\x3c/span> and <span class=\"name\">return_rc\x3c/span> are used to specify, what is returned by this keyword. If several arguments evaluate to true, multiple values are returned. Non-empty strings, except <span class=\"name\">false\x3c/span> and <span class=\"name\">False\x3c/span>, evaluate to true.\x3c/p>\n<p>If errors are needed as well, set the argument value to true:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Start Command\x3c/td>\n<td>echo 'Hello John!'\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${stdout}\x3c/td>\n<td>${stderr}=\x3c/td>\n<td>Read Command Output\x3c/td>\n<td>return_stderr=True\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Empty\x3c/td>\n<td>${stderr}\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Often checking the return code is enough:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Start Command\x3c/td>\n<td>echo 'Hello John!'\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${rc}=\x3c/td>\n<td>Read Command Output\x3c/td>\n<td>return_stdout=False\x3c/td>\n<td>return_rc=True\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal As Integers\x3c/td>\n<td>${rc}\x3c/td>\n<td>0\x3c/td>\n<td># succeeded\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Using <a href=\"#Start Command\" class=\"name\">Start Command\x3c/a> and <a href=\"#Read Command Output\" class=\"name\">Read Command Output\x3c/a> follows 'last in, first out' (LIFO) policy, meaning that <a href=\"#Read Command Output\" class=\"name\">Read Command Output\x3c/a> operates on the most recent started command, after which that command is discarded and its output cannot be read again.\x3c/p>\n<p>If several commands have been started, the output of the last started command is returned. After that, a subsequent call will return the output of the new last (originally the second last) command:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Start Command\x3c/td>\n<td>echo 'HELLO'\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Start Command\x3c/td>\n<td>echo 'SECOND'\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${stdout}=\x3c/td>\n<td>Read Command Output\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${stdout}\x3c/td>\n<td>'SECOND'\x3c/td>\n\x3c/tr>\n<tr>\n<td>${stdout}=\x3c/td>\n<td>Read Command Output\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${stdout}\x3c/td>\n<td>'HELLO'\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>This keyword logs the read command with log level <span class=\"name\">INFO\x3c/span>.\x3c/p>","name":"Read Command Output","shortdoc":"Returns outputs of the most recent started command."},{"args":"expected, loglevel=None","doc":"<p>Consumes and returns the server output until <span class=\"name\">expected\x3c/span> is encountered.\x3c/p>\n<p>Text up until and including the <span class=\"name\">expected\x3c/span> will be returned.\x3c/p>\n<p>If <a href=\"#Default timeout\">the timeout\x3c/a> expires before the match is found, this keyword fails.\x3c/p>\n<p>The read output is logged. <span class=\"name\">loglevel\x3c/span> can be used to override the <a href=\"#Default loglevel\">default log level\x3c/a>.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>my.server.com\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Login\x3c/td>\n<td>johndoe\x3c/td>\n<td>${PASSWORD}\x3c/td>\n\x3c/tr>\n<tr>\n<td>Write\x3c/td>\n<td>sudo su -\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${output}=\x3c/td>\n<td>Read Until\x3c/td>\n<td>:\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${output}\x3c/td>\n<td>[sudo] password for johndoe:\x3c/td>\n\x3c/tr>\n<tr>\n<td>Write\x3c/td>\n<td>${PASSWORD}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${output}=\x3c/td>\n<td>Read Until\x3c/td>\n<td>@\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should End With\x3c/td>\n<td>${output}\x3c/td>\n<td>root@\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>See also <a href=\"#Read Until Prompt\" class=\"name\">Read Until Prompt\x3c/a> and <a href=\"#Read Until Regexp\" class=\"name\">Read Until Regexp\x3c/a> keywords. For more details about reading and writing in general, see <a href=\"#Interactive shells\" class=\"name\">interactive shells\x3c/a> section.\x3c/p>","name":"Read Until","shortdoc":"Consumes and returns the server output until `expected` is encountered."},{"args":"loglevel=None","doc":"<p>Consumes and returns the server output until the prompt is found.\x3c/p>\n<p>Text up and until prompt is returned. <a href=\"#Default prompt\">The prompt must be set\x3c/a> before this keyword is used.\x3c/p>\n<p>If <a href=\"#Default timeout\">the timeout\x3c/a> expires before the match is found, this keyword fails.\x3c/p>\n<p>This keyword is useful for reading output of a single command when output of previous command has been read and that command does not produce prompt characters in its output.\x3c/p>\n<p>The read output is logged. <span class=\"name\">loglevel\x3c/span> can be used to override the <a href=\"#Default loglevel\">default log level\x3c/a>.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>my.server.com\x3c/td>\n<td>prompt=$\x3c/td>\n\x3c/tr>\n<tr>\n<td>Login\x3c/td>\n<td>johndoe\x3c/td>\n<td>${PASSWORD}\x3c/td>\n\x3c/tr>\n<tr>\n<td>Write\x3c/td>\n<td>sudo su -\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Write\x3c/td>\n<td>${PASSWORD}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Set Client Configuration\x3c/td>\n<td>prompt=#\x3c/td>\n<td># For root, the prompt is #\x3c/td>\n\x3c/tr>\n<tr>\n<td>${output}=\x3c/td>\n<td>Read Until Prompt\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should End With\x3c/td>\n<td>${output}\x3c/td>\n<td>root@myserver:~#\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>See also <a href=\"#Read Until\" class=\"name\">Read Until\x3c/a> and <a href=\"#Read Until Regexp\" class=\"name\">Read Until Regexp\x3c/a> keywords. For more details about reading and writing in general, see <a href=\"#Interactive shells\" class=\"name\">interactive shells\x3c/a> section.\x3c/p>","name":"Read Until Prompt","shortdoc":"Consumes and returns the server output until the prompt is found."},{"args":"regexp, loglevel=None","doc":"<p>Consumes and returns the server output until a match to <span class=\"name\">regexp\x3c/span> is found.\x3c/p>\n<p><span class=\"name\">regexp\x3c/span> can be a pattern or a compiled regexp object.\x3c/p>\n<p>Text up until and including the <span class=\"name\">regexp\x3c/span> will be returned.\x3c/p>\n<p>Regular expression check is implemented using the Python <a href=\"http://docs.python.org/2/library/re.html\">re module\x3c/a>. Python's regular expression syntax is derived from Perl, and it is thus also very similar to the syntax used, for example, in Java, Ruby and .NET.\x3c/p>\n<p>Things to note about the <span class=\"name\">regexp\x3c/span> syntax:\x3c/p>\n<ul>\n<li>Backslash is an escape character in the test data, and possible backslashes in the pattern must thus be escaped with another backslash (e.g. '\\\\d\\\\w+').\x3c/li>\n\x3c/ul>\n<ul>\n<li>Possible flags altering how the expression is parsed (e.g. re.IGNORECASE, re.MULTILINE) can be set by prefixing the pattern with the '(?iLmsux)' group (e.g. '(?im)pattern'). The available flags are 'IGNORECASE': 'i', 'MULTILINE': 'm', 'DOTALL': 's', 'VERBOSE': 'x', 'UNICODE': 'u', and 'LOCALE': 'L'.\x3c/li>\n\x3c/ul>\n<p>If <a href=\"#Default timeout\">the timeout\x3c/a> expires before the match is found, this keyword fails.\x3c/p>\n<p>The read output is logged. <span class=\"name\">loglevel\x3c/span> can be used to override the <a href=\"#Default loglevel\">default log level\x3c/a>.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>my.server.com\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Login\x3c/td>\n<td>johndoe\x3c/td>\n<td>${PASSWORD}\x3c/td>\n\x3c/tr>\n<tr>\n<td>Write\x3c/td>\n<td>sudo su -\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${output}=\x3c/td>\n<td>Read Until Regexp\x3c/td>\n<td>\\\\[.*\\\\].*:\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${output}\x3c/td>\n<td>[sudo] password for johndoe:\x3c/td>\n\x3c/tr>\n<tr>\n<td>Write\x3c/td>\n<td>${PASSWORD}\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${output}=\x3c/td>\n<td>Read Until Regexp\x3c/td>\n<td>.*@\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${output}\x3c/td>\n<td>root@\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>See also <a href=\"#Read Until\" class=\"name\">Read Until\x3c/a> and <a href=\"#Read Until Prompt\" class=\"name\">Read Until Prompt\x3c/a> keywords. For more details about reading and writing in general, see <a href=\"#Interactive shells\" class=\"name\">interactive shells\x3c/a> section.\x3c/p>","name":"Read Until Regexp","shortdoc":"Consumes and returns the server output until a match to `regexp` is found."},{"args":"timeout=None, newline=None, prompt=None, term_type=None, width=None, height=None, path_separator=None, encoding=None","doc":"<p>Update the <a href=\"#Configuration\" class=\"name\">configuration\x3c/a> of the current connection.\x3c/p>\n<p>Only parameters whose value is other than <span class=\"name\">None\x3c/span> are updated.\x3c/p>\n<p>In the following example, <a href=\"#Default prompt\"><span class=\"name\">prompt\x3c/span>\x3c/a> is set for the current connection. Other settings are left intact:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>my.server.com\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Set Client Configuration\x3c/td>\n<td>prompt=$\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${myserver}=\x3c/td>\n<td>Get Connection\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${myserver.prompt}\x3c/td>\n<td>$\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Using keyword does not affect the other connections:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>linux.server.com\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Set Client Configuration\x3c/td>\n<td>prompt=$\x3c/td>\n<td>\x3c/td>\n<td># Only linux.server.com affected\x3c/td>\n\x3c/tr>\n<tr>\n<td>Open Connection\x3c/td>\n<td>windows.server.com\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Set Client Configuration\x3c/td>\n<td>prompt=&gt;\x3c/td>\n<td>\x3c/td>\n<td># Only windows.server.com affected\x3c/td>\n\x3c/tr>\n<tr>\n<td>${linux}\x3c/td>\n<td>${windows}=\x3c/td>\n<td>Get Connections\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${linux.prompt}\x3c/td>\n<td>$\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${windows.prompt}\x3c/td>\n<td>&gt;\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Multiple settings are possible. This example updates <a href=\"#Default terminal settings\">the terminal settings\x3c/a> of the current connection:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Open Connection\x3c/td>\n<td>192.168.1.1\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Set Client Configuration\x3c/td>\n<td>term_type=ansi\x3c/td>\n<td>width=40\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Arguments <a href=\"#Default path separator\"><span class=\"name\">path_separator\x3c/span>\x3c/a> and <a href=\"#Default encoding\"><span class=\"name\">encoding\x3c/span>\x3c/a> were added in SSHLibrary 2.0.\x3c/p>","name":"Set Client Configuration","shortdoc":"Update the `configuration` of the current connection."},{"args":"timeout=None, newline=None, prompt=None, loglevel=None, term_type=None, width=None, height=None, path_separator=None, encoding=None","doc":"<p>Update the default <a href=\"#Configuration\" class=\"name\">configuration\x3c/a>.\x3c/p>\n<p>Please note that using this keyword does not affect the already open connections. Use <a href=\"#Set Client Configuration\" class=\"name\">Set Client Configuration\x3c/a> to configure the active connection.\x3c/p>\n<p>Only parameters whose value is other than <span class=\"name\">None\x3c/span> are updated.\x3c/p>\n<p>This example sets <a href=\"#Default prompt\"><span class=\"name\">prompt\x3c/span>\x3c/a> to <span class=\"name\">$\x3c/span>:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Set Default Configuration\x3c/td>\n<td>prompt=$\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>This example sets <a href=\"#Default newline\"><span class=\"name\">newline\x3c/span>\x3c/a> and <a href=\"#Default path separator\"><span class=\"name\">path_separator\x3c/span>\x3c/a> to the ones known by Windows:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Set Default Configuration\x3c/td>\n<td>newline=CRLF\x3c/td>\n<td>path_separator=\\\\\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Sometimes you might want to use longer <a href=\"#Default timeout\"><span class=\"name\">timeout\x3c/span>\x3c/a> for all the subsequent connections without affecting the existing ones:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Set Default Configuration\x3c/td>\n<td>timeout=5 seconds\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Open Connection\x3c/td>\n<td>local.server.com\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Set Default Configuration\x3c/td>\n<td>timeout=20 seconds\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Open Connection\x3c/td>\n<td>emea.server.com\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Open Connection\x3c/td>\n<td>apac.server.com\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${local}\x3c/td>\n<td>${emea}\x3c/td>\n<td>${apac}=\x3c/td>\n<td>Get Connections\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal As Integers\x3c/td>\n<td>${local.timeout}\x3c/td>\n<td>5\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal As Integers\x3c/td>\n<td>${emea.timeout}\x3c/td>\n<td>20\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal As Integers\x3c/td>\n<td>${apac.timeout}\x3c/td>\n<td>20\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>Arguments <a href=\"#Default terminal settings\"><span class=\"name\">term_type\x3c/span>\x3c/a>, <a href=\"#Default terminal settings\"><span class=\"name\">width\x3c/span>\x3c/a>, <a href=\"#Default terminal settings\"><span class=\"name\">height\x3c/span>\x3c/a>, <a href=\"#Default path separator\"><span class=\"name\">path_separator\x3c/span>\x3c/a> and <a href=\"#Default encoding\"><span class=\"name\">encoding\x3c/span>\x3c/a> were added in SSHLibrary 2.0.\x3c/p>","name":"Set Default Configuration","shortdoc":"Update the default `configuration`."},{"args":"command","doc":"<p>Starts execution of the <span class=\"name\">command\x3c/span> on the remote machine and returns immediately.\x3c/p>\n<p>This keyword returns nothing and does not wait for the <span class=\"name\">command\x3c/span> execution to be finished. If waiting for the output is required, use <a href=\"#Execute Command\" class=\"name\">Execute Command\x3c/a> instead.\x3c/p>\n<p>This keyword does not return any output generated by the started <span class=\"name\">command\x3c/span>. Use <a href=\"#Read Command Output\" class=\"name\">Read Command Output\x3c/a> to read the output:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Start Command\x3c/td>\n<td>echo 'Hello John!'\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${stdout}=\x3c/td>\n<td>Read Command Output\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${stdout}\x3c/td>\n<td>Hello John!\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>The <span class=\"name\">command\x3c/span> is always executed in a new shell, similarly as with <a href=\"#Execute Command\" class=\"name\">Execute Command\x3c/a>. Thus possible changes to the environment (e.g. changing working directory) are not visible to the later keywords:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Start Command\x3c/td>\n<td>pwd\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${pwd}=\x3c/td>\n<td>Read Command Output\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${pwd}\x3c/td>\n<td>/home/johndoe\x3c/td>\n\x3c/tr>\n<tr>\n<td>Start Command\x3c/td>\n<td>cd /tmp\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Start Command\x3c/td>\n<td>pwd\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${pwd}=\x3c/td>\n<td>Read Command Output\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${pwd}\x3c/td>\n<td>/home/johndoe\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p><a href=\"#Write\" class=\"name\">Write\x3c/a> and <a href=\"#Read\" class=\"name\">Read\x3c/a> can be used for <a href=\"#Interactive shells\">running multiple commands in the same shell\x3c/a>.\x3c/p>\n<p>This keyword logs the started command with log level <span class=\"name\">INFO\x3c/span>.\x3c/p>","name":"Start Command","shortdoc":"Starts execution of the `command` on the remote machine and returns immediately."},{"args":"index_or_alias","doc":"<p>Switches the active connection by index or alias.\x3c/p>\n<p><span class=\"name\">index_or_alias\x3c/span> is either connection index (an integer) or alias (a string). Index is got as the return value of <a href=\"#Open Connection\" class=\"name\">Open Connection\x3c/a>. Alternatively, both index and alias can queried as attributes of the object returned by <a href=\"#Get Connection\" class=\"name\">Get Connection\x3c/a>.\x3c/p>\n<p>This keyword returns the index of the previous active connection, which can be used to switch back to that connection later.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${myserver}=\x3c/td>\n<td>Open Connection\x3c/td>\n<td>my.server.com\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Login\x3c/td>\n<td>johndoe\x3c/td>\n<td>secretpasswd\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Open Connection\x3c/td>\n<td>build.local.net\x3c/td>\n<td>alias=Build\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Login\x3c/td>\n<td>jenkins\x3c/td>\n<td>jenkins\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Switch Connection\x3c/td>\n<td>${myserver}\x3c/td>\n<td>\x3c/td>\n<td># Switch using index\x3c/td>\n\x3c/tr>\n<tr>\n<td>${username}=\x3c/td>\n<td>Execute Command\x3c/td>\n<td>whoami\x3c/td>\n<td># Executed on my.server.com\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${username}\x3c/td>\n<td>johndoe\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Switch Connection\x3c/td>\n<td>Build\x3c/td>\n<td>\x3c/td>\n<td># Switch using alias\x3c/td>\n\x3c/tr>\n<tr>\n<td>${username}=\x3c/td>\n<td>Execute Command\x3c/td>\n<td>whoami\x3c/td>\n<td># Executed on build.local.net\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Be Equal\x3c/td>\n<td>${username}\x3c/td>\n<td>jenkins\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Switch Connection","shortdoc":"Switches the active connection by index or alias."},{"args":"text, loglevel=None","doc":"<p>Writes the given <span class=\"name\">text\x3c/span> on the remote machine and appends a newline.\x3c/p>\n<p>Appended <a href=\"#Default newline\">newline\x3c/a> can be configured.\x3c/p>\n<p>This keyword returns and <a href=\"#Interactive shells\">consumes\x3c/a> the written <span class=\"name\">text\x3c/span> (including the appended newline) from the server output.\x3c/p>\n<p>The written <span class=\"name\">text\x3c/span> is logged. <span class=\"name\">loglevel\x3c/span> can be used to override the <a href=\"#Default loglevel\">default log level\x3c/a>.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>${written}=\x3c/td>\n<td>Write\x3c/td>\n<td>su\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${written}\x3c/td>\n<td>su\x3c/td>\n<td># Returns the consumed output\x3c/td>\n\x3c/tr>\n<tr>\n<td>${output}=\x3c/td>\n<td>Read\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Not Contain\x3c/td>\n<td>${output}\x3c/td>\n<td>${written}\x3c/td>\n<td># Was consumed from the output\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${output}\x3c/td>\n<td>Password:\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Write\x3c/td>\n<td>invalidpasswd\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${output}=\x3c/td>\n<td>Read\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${output}\x3c/td>\n<td>su: Authentication failure\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>See also <a href=\"#Write Bare\" class=\"name\">Write Bare\x3c/a>.\x3c/p>","name":"Write","shortdoc":"Writes the given `text` on the remote machine and appends a newline."},{"args":"text","doc":"<p>Writes the given <span class=\"name\">text\x3c/span> on the remote machine without appending a newline.\x3c/p>\n<p>Unlike <a href=\"#Write\" class=\"name\">Write\x3c/a>, this keyword returns and <a href=\"#Interactive shells\">consumes\x3c/a> nothing.\x3c/p>\n<p>Example:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Write Bare\x3c/td>\n<td>su\\n\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${output}=\x3c/td>\n<td>Read\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${output}\x3c/td>\n<td>su\x3c/td>\n<td># Was not consumed from output\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${output}\x3c/td>\n<td>Password:\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Write Bare\x3c/td>\n<td>invalidpasswd\\n\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>${output}=\x3c/td>\n<td>Read\x3c/td>\n<td>\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n<tr>\n<td>Should Contain\x3c/td>\n<td>${output}\x3c/td>\n<td>su: Authentication failure\x3c/td>\n<td>\x3c/td>\n\x3c/tr>\n\x3c/table>\n<p>See also <a href=\"#Write\" class=\"name\">Write\x3c/a>.\x3c/p>","name":"Write Bare","shortdoc":"Writes the given `text` on the remote machine without appending a newline."},{"args":"text, expected, timeout, retry_interval, loglevel=None","doc":"<p>Writes the given <span class=\"name\">text\x3c/span> repeatedly until <span class=\"name\">expected\x3c/span> appears in the server output.\x3c/p>\n<p>This keyword returns nothing.\x3c/p>\n<p><span class=\"name\">text\x3c/span> is written without appending a newline and is <a href=\"#Interactive shells\">consumed\x3c/a> from the server output before <span class=\"name\">expected\x3c/span> is read.\x3c/p>\n<p>If <span class=\"name\">expected\x3c/span> does not appear in output within <span class=\"name\">timeout\x3c/span>, this keyword fails. <span class=\"name\">retry_interval\x3c/span> defines the time before writing <span class=\"name\">text\x3c/span> again. Both <span class=\"name\">timeout\x3c/span> and <span class=\"name\">retry_interval\x3c/span> must be given in Robot Framework's time format (e.g. <span class=\"name\">5\x3c/span>, <span class=\"name\">1 minute\x3c/span>, <span class=\"name\">2 min 3 s\x3c/span>, <span class=\"name\">4.5\x3c/span>).\x3c/p>\n<p>The written <span class=\"name\">text\x3c/span> is logged. <span class=\"name\">loglevel\x3c/span> can be used to override the <a href=\"#Default loglevel\">default log level\x3c/a>.\x3c/p>\n<p>This example will write <span class=\"name\">lsof -c python26\\n\x3c/span> (list all files currently opened by python 2.6), until <span class=\"name\">myscript.py\x3c/span> appears in the output. The command is written every 0.5 seconds. The keyword fails if <span class=\"name\">myscript.py\x3c/span> does not appear in the server output in 5 seconds:\x3c/p>\n<table border=\"1\">\n<tr>\n<td>Write Until Expected Output\x3c/td>\n<td>lsof -c python26\\n\x3c/td>\n<td>expected=myscript.py\x3c/td>\n<td>timeout=5s\x3c/td>\n<td>retry_interval=0.5s\x3c/td>\n\x3c/tr>\n\x3c/table>","name":"Write Until Expected Output","shortdoc":"Writes the given `text` repeatedly until `expected` appears in the server output."}],"name":"SSHLibrary","named_args":true,"scope":"global","version":"2.0"};
</script>
<title></title>
</head>
<body>

<div id="javascript_disabled">
  <h1>Opening library documentation failed</h1>
  <ul>
    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
    <li>Make sure you are using a <b>modern enough browser</b>. Firefox 3.5, IE 8, or equivalent is required, newer browsers are recommended.</li>
    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
  </ul>
</div>

<script type="text/javascript">
    // Not using jQuery here for speed and to support ancient browsers.
    document.getElementById('javascript_disabled').style.display = 'none';
</script>

<script type="text/javascript">
    $(document).ready(function() {
        parseTemplates();
        document.title = libdoc.name;
        $.tmpl('start_template', libdoc).appendTo($('body'));
        if (libdoc.inits.length > 0) {
            $.tmpl('importing_template', libdoc).appendTo($('body'));
        }
        $.tmpl('shortcuts_template', libdoc).appendTo($('body'));
        $.tmpl('keywords_template', libdoc).appendTo($('body'));
        $.tmpl('footer_template', libdoc).appendTo($('body'));
        scrollToHash();
    });

    function parseTemplates() {
        $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
            $.template(elem.id, elem.text);
        });
    }

    function scrollToHash() {
        if (window.location.hash)
            window.location.hash = window.location.hash.substring(1);
    }
</script>

<script type="text/x-jquery-tmpl" id="start_template">
    <h1>${name}</h1>
    <table class="metadata">
    {{if version}}<tr><th>Library version:</th><td>${version}</td></tr>{{/if}}
    {{if scope}}<tr><th>Library scope:</th><td>${scope}</td></tr>{{/if}}
    <tr><th>Named arguments:</th><td>{{if named_args}}supported{{else}}not supported{{/if}}</td></tr>
    </table>
    <h2 id="Introduction">Introduction</h2>
    <div class="doc">{{html doc}}</div>
</script>

<script type="text/x-jquery-tmpl" id="importing_template">
    <h2 id="Importing">Importing</h2>
    <table border="1" class="keywords">
        <tr>
            <th class="arg">Arguments</th>
            <th class="doc">Documentation</th>
        </tr>
        {{each inits}}
        <tr>
            <td class="arg">${$value.args}</td>
            <td class="doc">{{html $value.doc}}</td>
        </tr>
        {{/each}}
    </table>
</script>

<script type="text/x-jquery-tmpl" id="shortcuts_template">
    <h2 id="Shortcuts">Shortcuts</h2>
    <div class='shortcuts'>
        {{each keywords}}
            <a href="#${$value.name}" title="${$value.shortdoc}">${$value.name}</a>
            {{if $index < keywords.length-1}} &middot; {{/if}}
        {{/each}}
    </div>
</script>

<script type="text/x-jquery-tmpl" id="keywords_template">
    <h2 id="Keywords">Keywords</h2>
    <table border="1" class="keywords">
        <tr>
            <th class="kw">Keyword</th>
            <th class="arg">Arguments</th>
            <th class="doc">Documentation</th>
        </tr>
        {{each keywords}}
        <tr>
            <td class="kw"><a name="${$value.name}"></a>${$value.name}</td>
            <td class="arg">${$value.args}</td>
            <td class="doc">{{html $value.doc}}</td>
        </tr>
        {{/each}}
    </table>
</script>
<script type="text/x-jquery-tmpl" id="footer_template">
    <p class="footer">
        Altogether ${keywords.length} keywords.<br>
        Generated by <a href="http://code.google.com/p/robotframework/wiki/LibraryDocumentationTool">libdoc</a>
        on ${generated}.
    </p>
</script>

</body>
</html>
